/*
2022-2-27 
https://www.acwing.com/problem/content/4310/
*/
#include<cstring>
#include<iostream>
#include<algorithm>

using namespace std;

int cnt[10];

string get_min(int x)
{
    string res=to_string(x);
    cnt[x]--;
    
    for(int i=0;i<10;i++)
        for(int j=0;j<cnt[i];j++)
            res+=to_string(i);
    
    cnt[x]++;
    return res;
}

int main()
{
    string a,b;
    cin>>a>>b;
    
    if(a.size()<b.size())
    {
        sort(a.begin(),a.end(),greater<char>());
        cout<<a<<endl;
    }
    else
    {
        string res="";
        for(auto c:a) cnt[c-'0']++;
        
        for(int i=0;i<a.size();i++)
            for(int j=9;j>=0;j--)
                if(cnt[j] && res+get_min(j) <= b)
                {
                    res+=to_string(j);
                    cnt[j]--;
                    break;
                }
        cout<<res<<endl;
    }
    
    return 0;
}
